//
//  HomeViewModel.swift
//  Sina
//
//  Created by 管观荣 on 15/9/27.
//  Copyright © 2015年 CHer. All rights reserved.
//

import UIKit
/// 微博的视图模型
/**
对于没有`父类`的 class，如果要编写调试信息，需要遵守 CustomStringConvertible
然后实现 var description: String
*/

class HomeViewModel:CustomStringConvertible {

    /// 微博模型
    var home : Home
    /// 行高属性
    lazy var rowHeight: CGFloat = {
//        print("计算行高 \(self.home)")
        var cell : HomeCell
        // 1. 创建cell
        if self.home.retweeted_status != nil {
             cell = RetweetedCell(style: .Default, reuseIdentifier: WBRtweetedCellID)
        }else {
             cell = NomralCell(style: .Default, reuseIdentifier: WBNomralCellID)
        }
        
        
        // 2. 返回行高
        return cell.rowHeight(self)
        }()
    
    /// 用户头像 URL
    var userProfileUrl: NSURL {
        return NSURL(string: home.user?.profile_image_url ?? "")!
    }
    /// 认证图像 - 计算型属性，每次调用的时候，都会临时计算！
    /// UIImage(name: XXX) 系统缓存图片，程序员无法释放！
    /// 计算型属性一定要保证执行速度够快，或者有缓存！
    var userVipImage: UIImage? {
        switch home.user?.verified_type ?? -1 {
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    /// 会员图标
    var userMemberImage: UIImage? {
        if home.user?.mbrank > 0 && home.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(home.user!.mbrank)")
        }
        return nil
    }
    //cell
    var cellID :String {
        return home.retweeted_status == nil ? WBNomralCellID : WBRtweetedCellID
    }
    /// 被转发微博的原创微博的文字
    var retweetedText :String? {
        let userName = home.retweeted_status?.user?.screen_name ?? ""
        
        let text = home.retweeted_status?.text ?? ""
        
        
        return "@" + userName + ":" + text
    }
    
    /// 配图 URL 数组 - 保存住 URL 的数组，不要每次计算(非常重要！)
    var thumbnailUrls: [NSURL]?
    
    /// 构造函数
    init( home:Home ) {
        self.home = home
        
        // 生成配图 URL 数组
        // 1> 判断配图数组中是否有内容
        if let urls = home.retweeted_status?.pic_urls ?? home.pic_urls {
            // 2> 创建缩略图数组
            thumbnailUrls = [NSURL]()
            
            // 3> 遍历数组，添加 URL 数组
            for dict in urls {
                // 之所以强行解包，相信后台程序员
                let url = NSURL(string: dict["thumbnail_pic"] ?? "")
                
                thumbnailUrls?.append(url!)

            }
        
        }
    }
    
    /// 描述信息
    var description: String {
        return home.description + " 配图数组 URL + \(thumbnailUrls)"
    }

}
